//wz-管理选择输出模式（LCD\WEB）

#ifndef _DISP_MANAGER_H
#define _DISP_MANAGER_H

#include <common.h>
#include <font_manager.h>
//因为好多文件都要引用Region,把它单放到一个目录里：commom.h
/*
#ifndef NULL
#define NULL (void *)0
#endif
*/
typedef struct DispBuff {
	int iXres;//分辨率
	int iYres;
	int iBpp;//wz-每个像素用多少位表示（bpp:bits per pixel）
	char *buff; //缓冲区地址
}DispBuff, *PDispBuff;

//因为好多文件都要引用Region,把它单放到一个目录里：commom.h
/*typedef struct Region{
    int iLeftUpX;
	int iLeftUpY;
	int iWidth; //宽度
	int iHeigh; //高度
}Region, *PRegion;
*/
typedef struct DispOpr{
    char *name;
    int (*DeviceInit)(void);  //定义函数指针（*xxx）
    int (*DeviceExit)(void);
    char (*GetBuffer)(PDispBuff ptDispBuff); //得到屏幕的信息
    int (*FlushRegion)(PRegion ptRegion, PDispBuff ptDispBuff); //刷新某个区域(wz-按钮的)
    struct DispOpr *ptNext; //指针域。wz0819-定义的链表：系统中支持多设备输出（LCD、Web）,选取一个，用链表将这些链接起来
}DispOpr, *PDispOpr;

void RegisterDisplay(PDispOpr ptDispOpr);
void DisplaySystemRegister(void);
int SelectDefaultDisplay(char *name);
int InitDefaultDisplay(void);
int PutPixel(int x, int y, unsigned int dwColor);
int FlushDisplayRegion(PRegion ptRegion, PDispBuff ptDispBuff);
PDispBuff GetDisplayBuffer(void);
void DrawFontBitMap(PFontBitMap ptFontBitMap, unsigned int dwColor);
void DrawRegion(PRegion ptRegion, unsigned int dwColor);
void DrawTextInRegionCentral(char *name, PRegion ptRegion, unsigned int dwColor);


#endif // !__DISP_MANA


